package com.cango.student.bitset;

import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;
import java.util.Random;

public class ComputeSieve {

    //    /**
//     * 用bitset查询质数
//     * @param args
//     */
//    public static void main(String[] args) {
//        int n = 100;
//        BitSet b = new BitSet(n + 1);
//        int i;
//        // 设置书
//        for (i = 2; i <= n; i++) {
//            b.set(i);
//        }
//
//        i = 2;
//        while (i * i <= n) {
//            if (b.get(i)) {
//                int k = 2 * i;
//                while (k <= n) {
//                    b.clear(k);
//                    k += i;
//                }
//            }
//            i++;
//        }
//
//        // 遍历
//        i = 0;
//        while (i <= n) {
//            if (b.get(i)) {
//                System.out.println(i);
//            }
//            i++;
//        }
//    }
//    // 有1千万个随机数，随机数的范围在1到1亿之间。现在要求写出一种算法，将1到1亿之间没有在随机数中的数求出来？
//    public static void main(String[] args) {
//        int randomInt = 100;
//        int allInt = 1000;
//        Random random = new Random();
//        // 随机数
//        List<Integer> list = new ArrayList<>();
//        for (int i = 0; i < randomInt; i++) {
//            int randomResult = random.nextInt(allInt);
//            list.add(randomResult);
//        }
//        System.out.println("产生的随机数有");
//        for (int i = 0; i < list.size(); i++) {
//            System.out.print(list.get(i) + ",");
//        }
//        // 设置大小 1亿
//        BitSet bitSet = new BitSet(allInt);
//        System.out.println(bitSet.size());
//        for (int i = 0; i < randomInt; i++) {
//            // void set(int index)
//            // 将指定索引处的位设置为 true。
//            bitSet.set(list.get(i));
//        }
//
//        // int size( )
//        // 返回此 BitSet 表示位值时实际使用空间的位数。
//        for (int i = 0; i < allInt; i++) {
//            if (!bitSet.get(i)) {
//                System.out.print(i + ",");
//            }
//        }
//    }
    public static void main(String[] args) {
        BitSet bitSet = new BitSet(10);
        BitSet bitSet2 = new BitSet(10);
        System.out.println(bitSet.size());
        bitSet.set(1);
        bitSet.set(3);
        bitSet.set(5);

        bitSet2.set(2);
        bitSet2.set(3);
        bitSet2.set(5);

        bitSet.and(bitSet2);

        for (int i = 0; i < 10; i++) {
            System.out.print(i + String.valueOf(bitSet.get(i)) + ":" );
        }

    }
}
